查看原文
开源技术

开源项目介绍|ncnn-神经网络推理框架

腾讯开源 腾讯开源 2023-07-11

2023腾讯犀牛鸟开源人才培养计划

开源项目介绍


扫码填写问卷报名,提交ncnn项目申请书

加入开发实践

与导师一起成长这一夏





ncnn 项目介绍

ncnn是一个为手机端极致优化的高性能神经网络前向计算框架。基于 ncnn,开发者能够将深度学习算法轻松移植到手机端高效执行,开发出人工智能 APP,将 AI 带到你的指尖。

ncnn 项目导师寄语

倪辉ncnn作者

ncnn是业界知名的AI推理框架,社区支持很好,参与研发是能学到知识和技术的,导师会很耐心帮助你的,对吧对吧!

ncnn 相关资料

ncnn 优秀开源 AI 应用大典: 

https://github.com/zchrissirhcz/awesome-ncnn

https://github.com/Baiyuetribe/ncnn-models


ncnn 架构技术视频: 

https://b23.tv/mv7rea1


ncnn 任务实战项目

编程任务

1(easy) rewrite logsoftmax and logsigmoid to ncnn ops in pnnx

在pnnx中将 logsoftmax和logsigmoid重写为ncnn的op

ncnn有log和softmax sigmoid算子实现,但没有 logsoftmax和logsigmoid

pnnx具备graph rewriter基础设施,可以实施M个op到N个op的改写

goals:

在pnnx中实现logsoftmax和logsigmoid的转换到ncnn

添加pnnx ncnn相关的单元测试

撰写有关pnnx graphrewriter技术文章

1(easy) infrastructure for NCNN_LOGE in vulkan glsl shader

vulkan glsl shader 支持 NCNN_LOGE 的基础设施

利用 GL_EXT_debug_printf 相关基础设施,实现在 ncnn shader 的调试打印功能

需要运行时相关vulkan扩展检查和启用

goals:

在需要时有 cmake 编译开关启用 NCNN_LOGE

保持兼容各种vulkan设备

1(easy) in-house math routines

无依赖的数学函数

Some embedded platforms may not provide math library by default.

For maximum portability, it is beneficial to add in-house math routines, like simpleomp simpleocv simplestl did the similar jobs

某些嵌入式默认不提供math库,添加无依赖的数学函数增加可移植性,就像simpleomp simpleocv simplestl那样

goals:

implement all math functions used in ncnn without math.h, eg exp log sin abs etc

add cmake option NCNN_SIMPLEM for enabling

add continuation integration

2(easy) pnnx python wrapper

pnnx python 封装

Though we have prebuild pnnx binary package, it is still not convenient enough to convert pytorch module into pnnx directly in python programming.

Passing input tensor shapes as command line arguments are error-prone.

虽然我们有预编译二进制包,但是在python编程中直接转换pytorch模块到pnnx依然不够方便

将输入tensor shape作为命令行参数也容易出错

goals:

create python wrapper for invoking command line pnnx executable with arguments

allow exporting torch module in python with pnnx(net, (a, b), "out.pnnx")

add continuation integration for releasing pypi package

pip install pnnx on windows/linux/macos

3(medium) optimize loongarch gemm

优化 loongarch gemm

write gemm_loongarch.cpp with lsx extension

test with qemu

利用lsx扩展优化实现gemm_loongarch.cpp,使用qemu测试

goals:

support any packed layout

good benchmark result

4(medium-hard) optimize risc-v gemm

优化 risc-v gemm

write gemm_riscv.cpp with risc-v vector extension and zfh(fp16)

test with qemu

利用risc-v vector和zfh(fp16)扩展优化实现gemm_riscv.cpp,使用qemu测试

goals:

support any packed layout and fp32/fp16

good benchmark result

5(medium-hard) optimize vulkan softmax with shared memory and subgroup operation

使用 shared memory 和 subgroup 操作优化 vulkan softmax

The reduction part in softmax vulkan implementation is quite naive, no use of any shared memory or subgroup operation.

A decent speedup could be expected if we apply these technologies.

As softmax is a major time consuming guy inside attention op, we could get much faster stable-diffusion vulkan.

softmax vulkan中的reduce部分实现相当简单,没有用到任何shared memory和subgroup操作

如果我们用上这两个技术,可以获得相当不错的加速

由于softmax是attention op中的耗时大户,这样也能加速stable-diffusion vulkan

goals:

implement reduction in softmax vulkan with shared memory and subgroup operation, for all axis and data types

test speed on desktop gpu and mobile phone gpu

6(insanely hard) large language model with ncnn

ncnn 部署大语言模型

It seems to be a paper task, but if you want to be the conqueror, we could help ;)

make LLM trace-able and export to torchscript, convert with pnnx, optimize attention fusing ....

experienced cpp programming skill is essential

一眼看是纸上谈兵,但如果你想,我们能帮 ;)

将LLM可trace,导出torchscript,用pnnx转换,优化attention合并....

需要经验丰富的cpp编程经验

ncnn 开源项目交流群

Pocky QQ群(MLIR YES!)677104663(超多大佬)

答案: multilevel intermediate representation

Telegram Group https://t.me/ncnnyes

Discord Channel https://discord.gg/YRsxgmF


Apache InLong 开源项目交流群

(该二维码至7月17日前有效)


Cherry Markdown 开源项目交流群


OpenCloudOS 开源项目交流群


OMI 开源项目交流群

(该二维码至7月17日前有效)


TencentOS Tiny 开源项目交流群


TDesign 开源项目交流群

(该二维码至7月17日前过期)


Tencent KonaJDK 开源项目交流群

(该二维码至7月17日前有效)


3TS 开源项目交流群

(该二维码至7月17日前有效)

更多开源项目信息,

尽在“腾讯开源人才社区

扫码加入,解锁所有学习资料

🔍学生指南Q&A:

https://github.com/Tencent/OpenSourceTalent/issues/24

 🔍官方QQ群:

859260607 (加群请备注学校+专业)






腾讯犀牛鸟开源人才培养计划官网

 https://opensource.tencent.com/summer-of-code

(点击文末阅读原文直接访问)

合作或疑问欢迎联系:tencentopen@tencent.com


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存